#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>

typedef struct
{
    int integer;
    char string[24];
} RECORD;

#define NRECORDS (100)

int main(int argc, char **argv)
{

    RECORD record, *mapped;
    int i, f;
    FILE *fp;

    fp = fopen("records.dat", "w+");

    for (i = 0; i < NRECORDS; i++)
    {
        record.integer = i;
        sprintf(record.string, "RECORE-%d ", i);
        fwrite(&record, sizeof(record), 1, fp);
    }
    fclose(fp);

    // 将43条记录中的整数43改为143，并写入到字符串中
    fp = fopen("records.dat", "r+");
    fseek(fp, 43 * sizeof(record), SEEK_SET);
    fread(&record, sizeof(record), 1, fp);

    //打印輸出讀到的數據
    printf("讀到的數據： %d \n",record.integer);
    printf("讀到的數據： %s \n",record.string);
    

    record.integer = 143;
    sprintf(record.string, "RECORE-%d ", record.integer);
    fseek(fp, 43 * sizeof(record), SEEK_SET);
    fwrite(&record, sizeof(record), 1, fp);
    fclose(fp);

    return 0;
}